home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / dbms_mag / 9107 / embay_c / form.cpp < prev    next >
C/C++ Source or Header  |  1991-03-13  |  3KB  |  112 lines

  1. // == form.cpp === member functions for form class ==================
  2. //                 Copyright 1991 Wes Peterson
  3.  
  4. #include "eb_edit.h"
  5.  
  6. scr_form::scr_form(int say_color, int get_color, int curr_color)
  7. {
  8.     say_attr = say_color;
  9.     get_attr = get_color;
  10.     curr_get_attr = curr_color;
  11. }
  12.  
  13. void scr_form::say(char *t)
  14.     text_item *ti = new text_item(track_row, track_col, t);
  15.     text.add_node((ll_node *)ti);
  16.     track_col = track_col + strlen(t);
  17. }
  18.  
  19. void scr_form::get(char *var, char *pct, char *msk, char *flg)
  20. {
  21.     ded *di = new ded(track_row, track_col, var, pct, msk, flg);
  22.     fields.add_node(di);
  23. }
  24.  
  25. void scr_form::get(long *var, char *pct, char *msk, char *flg)
  26. {
  27.        ded *di = new ded(track_row, track_col, var, pct, msk, flg);
  28.     fields.add_node(di);
  29. }
  30.  
  31. void scr_form::get(field& f)
  32. {
  33.     ded *di = new ded(track_row, track_col, &f, NULL, NULL, NULL);
  34.     fields.add_node(di);
  35. }
  36.  
  37. void scr_form::set_width(int w)
  38. {
  39.     ded *d = (ded *)fields.get_curr_node();
  40.     d->set_width(w);
  41. }
  42.  
  43. void scr_form::read()   
  44. {
  45.     textattr(say_attr);
  46.     clrscr();
  47.     display_says();
  48.     display_gets();
  49.     edit_gets();
  50. }
  51.  
  52. void scr_form::display_says(void)
  53. {
  54.     text_item     *ti = (text_item *)text.get_first_node();
  55.     while(ti)    {
  56.         ti->display();
  57.         ti = (text_item *)text.get_next_node();
  58.         }
  59. }
  60.  
  61. void scr_form::display_gets(void)
  62. {
  63.     ded *di = (ded *)fields.get_first_node();
  64.     while(di)    {
  65.         di->display(get_attr);
  66.         di = (ded *)fields.get_next_node();
  67.         }
  68. }
  69.  
  70. void scr_form::edit_gets(void)
  71. {
  72.     ded *di = (ded *)fields.get_first_node();
  73.  
  74.     int result;
  75.     int go_on = 1;
  76.  
  77.     while(go_on)    {
  78.         result =di->edit(get_attr, curr_get_attr);
  79.         switch(result)    {
  80.             case KPGUP:
  81.                 tbl->skip(UP);
  82.                 display_gets();
  83.                 break;
  84.             case KPGDN:
  85.                 tbl->skip(DOWN);
  86.                 display_gets();
  87.                 break;
  88.             case FEDITADV:
  89.             case FEDITLEAVE:
  90.             case FEDITADVR:
  91.             case FEDITADVD:
  92.                 di = (ded *)fields.get_next_node();
  93.                 if(!di)
  94.                     di = (ded *)fields.get_first_node();
  95.                 break;
  96.             case FEDITADVL:
  97.             case FEDITADVU:
  98.                 di = (ded *)fields.get_prev_node();
  99.                 if(!di)
  100.                     di = (ded *)fields.get_last_node();
  101.                 break;
  102.             case FEDITDONE:
  103.                 tbl->write();
  104.                 break;
  105.             case FEDITCAN:
  106.                 go_on = 0;
  107.             }
  108.         }
  109. }
  110.  
  111.